import javax.swing.tree.TreeNode;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;

//打印二叉树每一层最大值
class Solution {
    public List<Integer> largestValues(TreeNode root) {
          if(root==null){
                 return   new ArrayList<Integer>();
                }
                Queue<TreeNode> queue=new LinkedList<>();
                List<Integer> list=new LinkedList<>();
                queue.add(root);
                while(!queue.isEmpty()){
                    int maxVal=Integer.MIN_VALUE;
                    int size=queue.size();
                    for(int i=0;i<size;i++){
                        TreeNode node=queue.poll();
                        maxVal=Math.max(maxVal,node.val);
                        if(node.left!=null){
                            queue.add(node.left);
                        }
                        if(node.right!=null){
                            queue.add(node.right);
                        }

                    }
                    list.add(maxVal);

                }
                return list;
             
}
}